--2022-7-25

--类型和值

--[[
    lua语言是一种动态语言类型，在这种语言中没有类型定义
    在这种语言中没有类型定义，每个值都带有自身的类型信息

    8种基本类型
        nil 空
        boolean
        number
        string
        userdata用户数据    允许任意的C语言数据保存在此类型中
        function 函数
        thread 线程
        table 表
    使用type()可以得到一个值对应的类型名称
            type()的返回值是一个字符串
]]

--[[
    a = nil
    print(type(a))
    a = true
    print(type(a))
    a = "hello"
    print(type(a))
    a = 10.0
    print(a)
    --]]

--[[ 1.4.1
    nil 是一种只有一个nil值的类型，主要作用就是与其他值进行区分，表示无效值
]]

--[[ 1.4.2
    true和false类型
    在lua语言中Boolean值并非是条件测试的唯一方式，任何值都可以表示条件
    将Boolean值false和nil外的其他所以值视为真，特别的是0和字符空串也视为真
]]

--[[
    lua语言逻辑运算符
    and or not
    and 当第一个操作数为true时返回第二个，否则反之
    or  当第一个操作数为true时返回第一个，否则反之
    and和or都遵循短路求值原则，必要时才对第二个操作数进行求值
    在lua语言中 x = x or v的惯用写法等价于 if not x then x = v end    即当x未被初始化时，设置默认值为v
    and运算符优先级高于or
    not 永远返回Boolean类型的值
]]